using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("Achievement")]
	public class Achievement : MonoClass
	{
		public enum AchType
		{
			OTHER,
			STARTER,
			UNLOCK_HERO,
			UNLOCK_GOLDEN_HERO,
			DAILY_QUEST,
			DAILY_REPEATABLE,
			HIDDEN,
			INTERNAL_ACTIVE,
			INTERNAL_INACTIVE,
			LOGIN_ACTIVATED,
			NORMAL_QUEST,
			LOGIN_AND_CHAIN_ACTIVATED,
			GENERIC_REWARD_CHEST
		}

		public enum UnlockableFeature
		{
			DAILY_QUESTS,
			FORGE,
			NAXX_WING_1_OWNED,
			NAXX_WING_2_OWNED,
			NAXX_WING_3_OWNED,
			NAXX_WING_4_OWNED,
			NAXX_WING_5_OWNED,
			NAXX_WING_1_PLAYABLE,
			NAXX_WING_2_PLAYABLE,
			NAXX_WING_3_PLAYABLE,
			NAXX_WING_4_PLAYABLE,
			NAXX_WING_5_PLAYABLE,
			VANILLA_HEROES
		}

		public enum Trigger
		{
			IGNORE,
			ACCOUNT_LICENSE_ADDED,
			ADVENTURE_PROGRESS,
			CLICK,
			DISENCHANT,
			COMPLETE_CARD_SET,
			FSG_FINISH_GAME,
			EVENT_TIMING_ONLY,
			GAIN_CARD,
			GAIN_GOLDEN_CARD,
			PURCHASE,
			WIN_GAME,
			PACK_READY_TO_OPEN,
			FINISH_GAME,
			DESTROYED,
			ACCOUNT_CREATED
		}

		public enum GameMode
		{
			UNKNOWN,
			ANY,
			VS_ANY_AI,
			VS_ANY_PRACTICE_AI,
			VS_BASIC_AI,
			VS_EXPERT_AI,
			VS_ADVENTURE_AI,
			TUTORIAL,
			MATCHMAKER,
			PLAY_MODE,
			PLAY_MODE_TAVERN_BRAWL,
			PLAY_MODE_STARDARD_FORMAT,
			PLAY_MODE_WILD_FORMAT,
			RANKED,
			CASUAL,
			ARENA,
			FRIENDLY_CHALLENGE,
			TAVERN_BRAWL
		}

		public enum ClientFlags
		{
			NONE = 0,
			IS_LEGENDARY = 1,
			SHOW_IN_QUEST_LOG = 2,
			IS_AFFECTED_BY_FRIEND_WEEK = 4
		}

		public enum Predicate
		{
			NONE,
			CAN_SEE_WILD
		}

		public enum ClickTriggerType
		{
			BUTTON_PLAY = 1,
			BUTTON_ARENA,
			BUTTON_ADVENTURE
		}

		public enum ShowToReturningPlayerType
		{
			ALWAYS,
			SUPPRESSED,
			SUPPRESSED_WITH_TIME
		}

		public static int NEW_ACHIEVE_ACK_PROGRESS => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "Achievement", "NEW_ACHIEVE_ACK_PROGRESS");

		public int m_id => method_2<int>("m_id");

		public bool m_enabled => method_2<bool>("m_enabled");

		public string m_name => method_4("m_name");

		public string m_description => method_4("m_description");

		public Predicate m_altTextPredicate => method_2<Predicate>("m_altTextPredicate");

		public string m_altName => method_4("m_altName");

		public string m_altDescription => method_4("m_altDescription");

		public AchType m_group => method_2<AchType>("m_group");

		public int m_maxProgress => method_2<int>("m_maxProgress");

		public SpecialEventType m_eventTrigger => method_2<SpecialEventType>("m_eventTrigger");

		public int m_linkToId => method_2<int>("m_linkToId");

		public Trigger m_trigger => method_2<Trigger>("m_trigger");

		public GameMode m_gameMode => method_2<GameMode>("m_gameMode");

		public List<RewardData> m_rewards => method_3<Class271<RewardData>>("m_rewards")?.method_25();

		public int m_scenarioID => method_2<int>("m_scenarioID");

		public int m_wingID => method_2<int>("m_wingID");

		public RewardVisualTiming m_rewardTiming => method_2<RewardVisualTiming>("m_rewardTiming");

		public int m_boosterReq => method_2<int>("m_boosterReq");

		public ClientFlags m_clientFlags => method_2<ClientFlags>("m_clientFlags");

		public bool m_useGenericRewardVisual => method_2<bool>("m_useGenericRewardVisual");

		public ShowToReturningPlayerType m_showToReturningPlayer => method_2<ShowToReturningPlayerType>("m_showToReturningPlayer");

		public int m_questDialogId => method_2<int>("m_questDialogId");

		public bool m_autoDestroy => method_2<bool>("m_autoDestroy");

		public string m_questTilePrefabName => method_4("m_questTilePrefabName");

		public int m_onCompleteQuestDialogBannerId => method_2<int>("m_onCompleteQuestDialogBannerId");

		public CharacterDialogSequence m_onReceivedDialogSequence => method_3<CharacterDialogSequence>("m_onReceivedDialogSequence");

		public CharacterDialogSequence m_onCompleteDialogSequence => method_3<CharacterDialogSequence>("m_onCompleteDialogSequence");

		public CharacterDialogSequence m_onProgress1DialogSequence => method_3<CharacterDialogSequence>("m_onProgress1DialogSequence");

		public CharacterDialogSequence m_onProgress2DialogSequence => method_3<CharacterDialogSequence>("m_onProgress2DialogSequence");

		public CharacterDialogSequence m_onDismissDialogSequence => method_3<CharacterDialogSequence>("m_onDismissDialogSequence");

		public bool m_isGenericRewardChest => method_2<bool>("m_isGenericRewardChest");

		public int m_progress => method_2<int>("m_progress");

		public int m_ackProgress => method_2<int>("m_ackProgress");

		public int m_completionCount => method_2<int>("m_completionCount");

		public bool m_active => method_2<bool>("m_active");

		public long m_dateGiven => method_2<long>("m_dateGiven");

		public long m_dateCompleted => method_2<long>("m_dateCompleted");

		public bool m_canAck => method_2<bool>("m_canAck");

		public int m_intervalRewardCount => method_2<int>("m_intervalRewardCount");

		public long m_intervalRewardStartDate => method_2<long>("m_intervalRewardStartDate");

		public List<long> m_rewardNoticeIDs => method_3<Class270<long>>("m_rewardNoticeIDs")?.method_25();

		public int ID => method_11<int>("get_ID", Array.Empty<object>());

		public bool Enabled => method_11<bool>("get_Enabled", Array.Empty<object>());

		public AchType AchieveType => method_11<AchType>("get_AchieveType", Array.Empty<object>());

		public int MaxProgress => method_11<int>("get_MaxProgress", Array.Empty<object>());

		public SpecialEventType EventTrigger => method_11<SpecialEventType>("get_EventTrigger", Array.Empty<object>());

		public int LinkToId => method_11<int>("get_LinkToId", Array.Empty<object>());

		public Trigger AchieveTrigger => method_11<Trigger>("get_AchieveTrigger", Array.Empty<object>());

		public GameMode Mode => method_11<GameMode>("get_Mode", Array.Empty<object>());

		public List<RewardData> Rewards => method_14<Class271<RewardData>>("get_Rewards", Array.Empty<object>())?.method_25();

		public int ScenarioID => method_11<int>("get_ScenarioID", Array.Empty<object>());

		public int WingID => method_11<int>("get_WingID", Array.Empty<object>());

		public RewardVisualTiming RewardTiming => method_11<RewardVisualTiming>("get_RewardTiming", Array.Empty<object>());

		public int BoosterRequirement => method_11<int>("get_BoosterRequirement", Array.Empty<object>());

		public bool UseGenericRewardVisual => method_11<bool>("get_UseGenericRewardVisual", Array.Empty<object>());

		public ShowToReturningPlayerType ShowToReturningPlayer => method_11<ShowToReturningPlayerType>("get_ShowToReturningPlayer", Array.Empty<object>());

		public int QuestDialogId => method_11<int>("get_QuestDialogId", Array.Empty<object>());

		public bool AutoDestroy => method_11<bool>("get_AutoDestroy", Array.Empty<object>());

		public string QuestTilePrefabName => method_13("get_QuestTilePrefabName");

		public int OnCompleteQuestDialogBannerId => method_11<int>("get_OnCompleteQuestDialogBannerId", Array.Empty<object>());

		public CharacterDialogSequence OnReceivedDialogSequence => method_14<CharacterDialogSequence>("get_OnReceivedDialogSequence", Array.Empty<object>());

		public CharacterDialogSequence OnCompleteDialogSequence => method_14<CharacterDialogSequence>("get_OnCompleteDialogSequence", Array.Empty<object>());

		public CharacterDialogSequence OnProgress1DialogSequence => method_14<CharacterDialogSequence>("get_OnProgress1DialogSequence", Array.Empty<object>());

		public CharacterDialogSequence OnProgress2DialogSequence => method_14<CharacterDialogSequence>("get_OnProgress2DialogSequence", Array.Empty<object>());

		public CharacterDialogSequence OnDismissDialogSequence => method_14<CharacterDialogSequence>("get_OnDismissDialogSequence", Array.Empty<object>());

		public AchieveDbfRecord DbfRecord => method_14<AchieveDbfRecord>("get_DbfRecord", Array.Empty<object>());

		public AchieveRegionDataDbfRecord CurrentRegionData => method_14<AchieveRegionDataDbfRecord>("get_CurrentRegionData", Array.Empty<object>());

		public int Progress => method_11<int>("get_Progress", Array.Empty<object>());

		public int AcknowledgedProgress => method_11<int>("get_AcknowledgedProgress", Array.Empty<object>());

		public bool CanBeAcknowledged => method_11<bool>("get_CanBeAcknowledged", Array.Empty<object>());

		public int CompletionCount => method_11<int>("get_CompletionCount", Array.Empty<object>());

		public bool Active => method_11<bool>("get_Active", Array.Empty<object>());

		public long DateGiven => method_11<long>("get_DateGiven", Array.Empty<object>());

		public long DateCompleted => method_11<long>("get_DateCompleted", Array.Empty<object>());

		public int IntervalRewardCount => method_11<int>("get_IntervalRewardCount", Array.Empty<object>());

		public long IntervalRewardStartDate => method_11<long>("get_IntervalRewardStartDate", Array.Empty<object>());

		public bool IsGenericRewardChest => method_11<bool>("get_IsGenericRewardChest", Array.Empty<object>());

		public bool IsLegendary => method_11<bool>("get_IsLegendary", Array.Empty<object>());

		public bool IsAffectedByDoubleGold => method_11<bool>("get_IsAffectedByDoubleGold", Array.Empty<object>());

		public bool CanShowInQuestLog => method_11<bool>("get_CanShowInQuestLog", Array.Empty<object>());

		public bool IsAffectedByFriendWeek => method_11<bool>("get_IsAffectedByFriendWeek", Array.Empty<object>());

		public bool IsFriendlyChallengeQuest => method_11<bool>("get_IsFriendlyChallengeQuest", Array.Empty<object>());

		public bool GameModeRequiresNonFriendlyChallenge => method_11<bool>("get_GameModeRequiresNonFriendlyChallenge", Array.Empty<object>());

		public string Name => method_13("get_Name");

		public string Description => method_13("get_Description");

		public Achievement(IntPtr address, string className)
			: base(address, className)
		{
		}

		public Achievement(IntPtr address)
			: this(address, "Achievement")
		{
		}

		public void SetClientFlags(ClientFlags clientFlags)
		{
			method_8("SetClientFlags", clientFlags);
		}

		public void SetAltTextPredicate(string altTextPredicateName)
		{
			method_8("SetAltTextPredicate", altTextPredicateName);
		}

		public void SetName(string name, string altName)
		{
			method_8("SetName", name, altName);
		}

		public void SetDescription(string description, string altDescription)
		{
			method_8("SetDescription", description, altDescription);
		}

		public void SetEventTrigger(SpecialEventType eventType)
		{
			method_8("SetEventTrigger", eventType);
		}

		public void AddRewardNoticeID(long noticeID)
		{
			method_8("AddRewardNoticeID", noticeID);
		}

		public void OnCancelSuccess()
		{
			method_8("OnCancelSuccess");
		}

		public bool IsInternal()
		{
			return method_11<bool>("IsInternal", Array.Empty<object>());
		}

		public bool IsNewlyActive()
		{
			return method_11<bool>("IsNewlyActive", Array.Empty<object>());
		}

		public bool IsCompleted()
		{
			return method_11<bool>("IsCompleted", Array.Empty<object>());
		}

		public bool IsNewlyCompleted()
		{
			return method_11<bool>("IsNewlyCompleted", Array.Empty<object>());
		}

		public bool IsActiveLicenseAddedAchieve()
		{
			return method_11<bool>("IsActiveLicenseAddedAchieve", Array.Empty<object>());
		}

		public void AckCurrentProgressAndRewardNotices()
		{
			method_9("AckCurrentProgressAndRewardNotices", new Class276.Enum20[0]);
		}

		public void AckCurrentProgressAndRewardNotices(bool ackIntermediateProgress)
		{
			method_9("AckCurrentProgressAndRewardNotices", new Class276.Enum20[1] { Class276.Enum20.Boolean }, ackIntermediateProgress);
		}

		public void IncrementIntervalRewardCount()
		{
			method_8("IncrementIntervalRewardCount");
		}

		public new string ToString()
		{
			return method_13("ToString");
		}

		public bool NeedToAcknowledgeProgress(bool ackIntermediateProgress)
		{
			return method_11<bool>("NeedToAcknowledgeProgress", new object[1] { ackIntermediateProgress });
		}

		public void SetProgress(int progress)
		{
			method_8("SetProgress", progress);
		}

		public void SetAcknowledgedProgress(int acknowledgedProgress)
		{
			method_8("SetAcknowledgedProgress", acknowledgedProgress);
		}

		public void AutoAckIfNeeded()
		{
			method_8("AutoAckIfNeeded");
		}
	}
}
